package com.beimi.game.cmd;

import com.beimi.game.BaseGame;
import com.beimi.game.MJService;
import com.beimi.game.common.HuInfo;
import com.beimi.game.player.GamePlayer;
import com.beimi.game.player.PlayerCardModule;
import com.beimi.net.AbstractGameCmd;
import com.next.core.util.GenericAnnotation;

@GenericAnnotation(type = "hu")
public class CmdHu extends AbstractGameCmd {

	@Override
	public void execute(MJService service, GamePlayer player, String data) {
		BaseGame game = service.getGame();
		PlayerCardModule cardModule = player.getCardModule();

		// 如果他不能和牌，那和个啥啊
		if (cardModule.isCanHu() == false) {
			LOG.warn("invalid request.");
			return;
		}

		// 标记为和牌
		cardModule.setHued(true);
		int hupai = game.getChuPai();
		boolean isZimo = false;

		HuInfo huData = new HuInfo();
		huData.setNumofgen(player.getCardModule().getNumOfGen());

		player.getCardModule().getHuInfo().add(huData);
		huData.setGangHu(player.getCardModule().getLastFangGangSeat() >= 0);

		int notify = -1;
		//
		// if(game.qiangGangContext != null){
		// hupai = game.qiangGangContext.pai;
		// var gangSeat = game.qiangGangContext.seatData;
		// notify = hupai;
		// huData.iszimo = false;
		// huData.action = "qiangganghu";
		// huData.isQiangGangHu = true;
		// huData.target = gangSeat.seatIndex;
		// huData.pai = hupai;
		//
		// recordGameAction(game,seatIndex,ACTION_HU,hupai);
		// game.qiangGangContext.isValid = false;
		//
		// var idx = gangSeat.holds.indexOf(hupai);
		// if(idx != -1){
		// gangSeat.holds.splice(idx,1);
		// gangSeat.countMap[hupai]--;
		// userMgr.sendMsg(gangSeat.userId,'game_holds_push',gangSeat.holds);
		// }
		//
		// gangSeat.huInfo.push({
		// action:"beiqianggang",
		// target:seatData.seatIndex,
		// index:seatData.huInfo.length-1,
		// });
		// }
		// else if(game.chuPai == -1){
		// hupai = seatData.holds.pop();
		// seatData.countMap[hupai] --;
		// notify = hupai;
		// huData.pai = hupai;
		// if(huData.isGangHu){
		// if(turnSeat.lastFangGangSeat == seatIndex){
		// huData.action = "ganghua";
		// huData.iszimo = true;
		// }
		// else{
		// var diangganghua_zimo = game.conf.dianganghua == 1;
		// huData.action = "dianganghua";
		// huData.iszimo = diangganghua_zimo;
		// huData.target = turnSeat.lastFangGangSeat;
		// }
		// }
		// else{
		// huData.action = "zimo";
		// huData.iszimo = true;
		// }
		//
		// isZimo = true;
		// recordGameAction(game,seatIndex,ACTION_ZIMO,hupai);
		// }
		// else{
		// notify = game.chuPai;
		// huData.pai = hupai;
		//
		// var at = "hu";
		// //炮胡
		// if(turnSeat.lastFangGangSeat >= 0){
		// at = "gangpaohu";
		// }
		//
		// huData.action = at;
		// huData.iszimo = false;
		// huData.target = game.turn;
		//
		// //毛转雨
		// if(turnSeat.lastFangGangSeat >= 0){
		// for(var i = turnSeat.actions.length-1; i >= 0; --i){
		// var t = turnSeat.actions[i];
		// if(t.type == "diangang" || t.type == "wangang" || t.type == "angang"){
		// t.state = "nop";
		// t.payTimes = 0;
		//
		// var nac = {
		// type:"maozhuanyu",
		// owner:turnSeat,
		// ref:t
		// }
		// seatData.actions.push(nac);
		// break;
		// }
		// }
		// }
		//
		// //记录玩家放炮信息
		// var fs = game.gameSeats[game.turn];
		// if(at == "gangpaohu"){
		// at = "gangpao";
		// }
		// else{
		// at = "fangpao";
		// }
		// fs.huInfo.push({
		// action:at,
		// target:seatData.seatIndex,
		// index:seatData.huInfo.length-1,
		// });
		//
		// recordGameAction(game,seatIndex,ACTION_HU,hupai);
		//
		// game.fangpaoshumu++;
		//
		// if(game.fangpaoshumu > 1){
		// game.yipaoduoxiang = seatIndex;
		// }
		// }
		//
		// if(game.firstHupai < 0){
		// game.firstHupai = seatIndex;
		// }
		//
		// //保存番数
		// var ti = seatData.tingMap[hupai];
		// huData.fan = ti.fan;
		// huData.pattern = ti.pattern;
		// huData.iszimo = isZimo;
		// //如果是最后一张牌，则认为是海底胡
		// huData.isHaiDiHu = game.currentIndex == game.mahjongs.length;
		//
		// if(game.conf.tiandihu){
		// if(game.chupaiCnt == 0 && game.button == seatData.seatIndex && game.chuPai ==
		// -1){
		// huData.isTianHu = true;
		// }
		// else if(game.chupaiCnt == 1 && game.turn == game.button && game.button !=
		// seatData.seatIndex && game.chuPai != -1){
		// huData.isDiHu = true;
		// }
		// }
		//
		// clearAllOptions(game,seatData);
		//
		// //通知前端，有人和牌了
		// userMgr.broacastInRoom('hu_push',{seatindex:seatIndex,iszimo:isZimo,hupai:notify},seatData.userId,true);
		//
		// //
		// if(game.lastHuPaiSeat == -1){
		// game.lastHuPaiSeat = seatIndex;
		// }
		// else{
		// var lp = (game.lastFangGangSeat - game.turn + 4) % 4;
		// var cur = (seatData.seatIndex - game.turn + 4) % 4;
		// if(cur > lp){
		// game.lastHuPaiSeat = seatData.seatIndex;
		// }
		// }
		//
		// //清空所有非胡牌操作
		// for(var i = 0; i < game.gameSeats.length; ++i){
		// var ddd = game.gameSeats[i];
		// ddd.canPeng = false;
		// ddd.canGang = false;
		// ddd.canChuPai = false;
		// sendOperations(game,ddd,hupai);
		// }
		//
		// //如果还有人可以胡牌，则等待
		// for(var i = 0; i < game.gameSeats.length; ++i){
		// var ddd = game.gameSeats[i];
		// if(ddd.canHu){
		// return;
		// }
		// }
		//
		// //和牌的下家继续打
		// clearAllOptions(game);
		// game.turn = game.lastHuPaiSeat;
		// moveToNextUser(game);
		// doUserMoPai(game);
	}
}
